Log in Register Dashboard Temp Share Shortlinks Frames API

HTMLify

app.js
Views: 3 | Author: cody
let activeIndex = 0;
const slides = document.getElementsByTagName("article");
const handleLeftClick = () => {
  const nextIndex = activeIndex - 1 >= 0 ? activeIndex - 1 : slides.length - 1;
  const [currentSlide, nextSlide] = getSlideElements(activeIndex, nextIndex);

  setSlideStatus(currentSlide, "after");
  setSlideStatus(nextSlide, "becoming-active-from-before");

  setTimeout(() => {
    setSlideStatus(nextSlide, "active");
    activeIndex = nextIndex;
  });
};

const handleRightClick = () => {
  const nextIndex = activeIndex + 1 <= slides.length - 1 ? activeIndex + 1 : 0;
  const [currentSlide, nextSlide] = getSlideElements(activeIndex, nextIndex);

  setSlideStatus(currentSlide, "before");
  setSlideStatus(nextSlide, "becoming-active-from-after");

  setTimeout(() => {
    setSlideStatus(nextSlide, "active");
    activeIndex = nextIndex;
  });
};

const getSlideElements = (currentIndex, nextIndex) => [document.querySelector(`[data-index="${currentIndex}"]`), document.querySelector(`[data-index="${nextIndex}"]`)];

const setSlideStatus = (slide, status) => {
  slide.dataset.status = status;
};

/* -- Mobile Nav Toggle -- */

const nav = document.querySelector("nav");
const handleNavToggle = () => {
  nav.dataset.transitionable = "true";
  nav.dataset.toggled = nav.dataset.toggled === "true" ? "false" : "true";
};

const mediaQuery = window.matchMedia("(max-width: 800px)");
mediaQuery.onchange = (e) => {
  nav.dataset.transitionable = "false";
  nav.dataset.toggled = "false";
};

Comments